package com.buddy.qreport.datasource.service;

import com.buddy.qreport.common.mybatis.entity.Page;
import com.buddy.qreport.datasource.entity.DataSourceEntity;

import javax.sql.DataSource;
import java.util.List;


public interface IDataSourceService {


    /***
     * 分页获取数据源列表
     * @param page
     * @return
     */
    Page<DataSourceEntity> getList(Page page);

    /**
     * 获取所有动态数据源
     * @return
     */
    List<DataSourceEntity> getList();

    /**
     * 获取数据源详情
     * @param id
     * @return
     */
    DataSourceEntity getOne(String id);


    /**
     * 添加数据源
     * @param entity
     */
    void add(DataSourceEntity entity);

    /**
     * 删除数据源
     * @param id
     */
    void delete(String id);

    /**
     * 删除数据源
     * @param entity
     */
    void updateById(DataSourceEntity entity);


    /**
     * 测试数据源配置是否可用
     * @param entity
     * @return
     */
    boolean test(DataSourceEntity entity) ;

    /**
     * 将数据实体转换为数据源实体
     * @param entity
     * @return
     */
    DataSource cast(DataSourceEntity entity);

    /**
     * 检测当前数据源是否可用
     * @param datasourceId 数据源id
     * @return
     */
    boolean avaiable(String datasourceId);

}
